﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TOAcademias;


namespace DAOAcademias
{

    /*************************************
    Autor: Carlos Sánchez
    Fecha de Creación: 06/02/2011
    Descripción de la Funcionalidad: Clase que contiene metodos que serviran para dar
    soporte a los registros de la entidad Encuesta.
    **************************************/

    public class DOEncuesta
    {

    DBModuloAcademiasDataContext dbml;
        
         public DOEncuesta()
        {
            dbml = new DBModuloAcademiasDataContext();
        }


         public List<TOEncuesta> obtenerEncuesta()
         {

             List<TOEncuesta> listaEncuesta = new List<TOEncuesta>();



             var encuesta = (from enc in dbml.ENCUESTAs 
                              select enc 
                              );

             foreach (var enc in encuesta)
             {

                 TOEncuesta toEncuesta = new TOEncuesta();
                 toEncuesta.Codigo = enc.COD_ENCUESTA;
                 toEncuesta.Descripcion  = enc.DES_ENCUESTA;
                 toEncuesta.FechaInicio   = enc.FEC_INICIO ;
                 toEncuesta.FechaFin = enc.FEC_FIN;
                 toEncuesta.Estado = enc.ESTADO;  
                 listaEncuesta.Add(toEncuesta);

             }

             return listaEncuesta;
         }

         public TOEncuesta obtenerEncuestaxCodigo(String CodigoEncuesta)
         {

             var encuesta = (from enc in dbml.ENCUESTAs
                             where enc.COD_ENCUESTA==CodigoEncuesta
                             select enc
                              ).Single();


                 TOEncuesta toEncuesta = new TOEncuesta();
                 toEncuesta.Codigo = encuesta.COD_ENCUESTA;
                 toEncuesta.Descripcion = encuesta.DES_ENCUESTA;
                 toEncuesta.FechaInicio = encuesta.FEC_INICIO;
                 toEncuesta.FechaFin = encuesta.FEC_FIN;
                 toEncuesta.Estado = encuesta.ESTADO;

                 return toEncuesta;
         }

         public List<TOEncuesta> obtenerEncuestaActivas()
         {

             List<TOEncuesta> listaEncuesta = new List<TOEncuesta>();



             var encuesta = (from enc in dbml.ENCUESTAs 
                              where enc.ESTADO == "ACTIVO"
                              select enc 
                              );

             foreach (var enc in encuesta)
             {

                 TOEncuesta toEncuesta = new TOEncuesta();
                 toEncuesta.Codigo  = enc.COD_ENCUESTA;
                 toEncuesta.Descripcion  = enc.DES_ENCUESTA;
                 toEncuesta.FechaInicio  =enc.FEC_INICIO;
                 toEncuesta.FechaFin  = enc.FEC_FIN;
                 toEncuesta.Estado = enc.ESTADO;

                 listaEncuesta.Add(toEncuesta);

             }

             return listaEncuesta;
         }


         public String generarCodigoEncuesta() 
         {
             List<TOEncuesta> listaEncuesta = obtenerEncuesta();

             int intAux = 0;
             int intTemp = 0;
             foreach (TOEncuesta encuesta in listaEncuesta)
             {
                 intTemp = Convert.ToInt32(encuesta.Codigo.Substring(2));
                 if (intTemp > intAux)
                 {
                     intAux = intTemp;
                 }
             }
             intAux = intAux + 1;

             string strCodigo = "" + intAux;

             strCodigo = "EN000".Substring(0, 5 - strCodigo.Length) + intAux;

             return strCodigo;         
         }



         public void insertarEncuesta(TOEncuesta toEncuesta)
         {            

             ENCUESTA enc = new ENCUESTA();
             enc.COD_ENCUESTA = generarCodigoEncuesta();
             enc.DES_ENCUESTA = toEncuesta.Descripcion;
             enc.FEC_INICIO = toEncuesta.FechaInicio;
             enc.FEC_FIN = toEncuesta.FechaFin;
             enc.ESTADO = toEncuesta.Estado;  

             dbml.ENCUESTAs.InsertOnSubmit(enc);
             dbml.SubmitChanges();


         }

         public void modificarEncuesta(TOEncuesta toEncuesta)
         {
             var encuesta = (from enc in dbml.ENCUESTAs
                             where enc.COD_ENCUESTA == toEncuesta.Codigo 
                             select enc).Single();

             encuesta.DES_ENCUESTA = toEncuesta.Descripcion;
             encuesta.FEC_INICIO = toEncuesta.FechaInicio;
             encuesta.FEC_FIN = toEncuesta.FechaFin;
             encuesta.ESTADO = toEncuesta.Estado;
   
             dbml.SubmitChanges();

         }


         public void eliminarEncuesta(String Codigo)
         {
             
            DOPregunta doPregunta = new DOPregunta();
            doPregunta.eliminarPreguntaxEncuesta(Codigo);
            DOSeccionEncuesta doSeccionEncuesta = new DOSeccionEncuesta();
            doSeccionEncuesta.eliminarSeccionEncuestaxEncuesta(Codigo);

             var encuesta = (from enc in dbml.ENCUESTAs
                             where enc.COD_ENCUESTA == Codigo && enc.ESTADO=="INGRESADO"
                             select enc).Single();
             dbml.ENCUESTAs.DeleteOnSubmit(encuesta);  
             dbml.SubmitChanges();

         }



    }
}
